//
//  PushUtils.swift
//  imprint
//
//  Created by 小柠檬🍋 on 2025/3/15.
//

import Foundation
//推送
class PushExt {
    
    static func initSDK() {
        getDelegate()?.initSDK()
    }
    
    static func setAccount(account: String?) {
        getDelegate()?.setAccount(account: account)
    }

    //发送定时任务，请求服务器保存
    static func sendSchedule(taskName: String, msgId: String, title: String, content: String, time: Int64) async throws {
        try await getDelegate()?.sendSchedule(taskName: taskName, msgId: msgId, title: title, content: content, time: time)
    }
    
    //删除定时任务
    static func deleteSchedule(msgId: String) async throws {
        try await getDelegate()?.deletSchedule(msgId: msgId)
    }
    
    
    //推送，使用代理模式，方便以后随意切换推送
    private static func getDelegate()-> PushProtocol? {
        return PushDelegate(instance: PushUMImpl())
    }
    
    
    
    
    
//    // SM2 公钥加密
//    // - Parameters:
//    //   - content: 原文
//    //   - publicKey: SM2 公钥（Base64 编码）
//    // - Returns: 加密后的 Base64 字符串，失败返回原文
//    func encryptBase64(content: String, publicKey: String?) -> String {
//        // 检查公钥有效性
//        guard let publicKey = publicKey, !publicKey.isEmpty else {
//            return content
//        }
//        
//        // 将 Base64 公钥解码为 Data
//        guard let publicKeyData = Data(base64Encoded: publicKey) else {
//            return content
//        }
//        
//        // 转换为十六进制字符串（假设加密库需要 Hex 格式）
//        let publicKeyHex = publicKeyData.map { String(format: "%02hhx", $0) }.joined()
//        
//        // 准备明文数据
//        let contentData = Data(content.utf8)
//        
//        // 调用 SM2 加密方法
//        guard let encryptedData = GMSm2Utils.encryptData(contentData, publicKey: publicKeyHex) else {
//            return content
//        }
//        
//        // 返回 Base64 编码结果
//        return encryptedData.base64EncodedString()
//    }
}
